package main

import (
	"os"
	"fmt"
	"net"
)

// 子网掩码地址其实就是一个特殊的IP地址,所以IPMask类型也是一个byte型数组,格式如下
// type IPMask []byte

func main()  {
	if(len(os.Args) != 2) {
		fmt.Fprintf(os.Stderr, "Usage:%s ip.addr\n", os.Args[0])
		os.Exit(0)
	}
	// 用户输入的地址
	dotaddr := os.Args[1]
	// 解析成byte型数组
	addr := net.ParseIP(dotaddr)
	if(addr == nil) {
		fmt.Println("地址不合法")
	}
	// 获取这个地址默认的子网掩码地址
	mask := addr.DefaultMask()
	fmt.Println("子网掩码为:", mask.String())
	network := addr.Mask(mask)
	fmt.Println("网络地址为:", network.String())
	ones, bits := mask.Size()
	fmt.Println("掩码bits", ones, "总bits", bits)
}
